package com.geo.entity;

import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.geo.entity.base.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;

import java.math.BigDecimal;
import java.time.LocalDateTime;

/**
 * 内容实体类
 * 定义内容信息和生成数据
 * 
 * @author GEO Team
 * @version 1.0.0
 */
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("biz_content")
public class Content extends BaseEntity {
    
    /**
     * 内容标题
     */
    @TableField("title")
    private String title;
    
    /**
     * 内容正文
     */
    @TableField("content")
    private String content;
    
    /**
     * 内容摘要
     */
    @TableField("summary")
    private String summary;
    
    /**
     * 企业ID
     */
    @TableField("business_id")
    private Long businessId;
    
    /**
     * 关键词ID（可选，关联到特定关键词）
     */
    @TableField("keyword_id")
    private Long keywordId;
    
    /**
     * 内容类型 - ARTICLE:文章 PRODUCT_DESC:产品描述 ADVERTISEMENT:广告文案 SOCIAL_POST:社交媒体 EMAIL:邮件 BLOG_POST:博客 NEWS:新闻 REVIEW:评测
     */
    @TableField("content_type")
    private String contentType;
    
    /**
     * 内容格式 - HTML:HTML格式 MARKDOWN:Markdown格式 PLAIN_TEXT:纯文本 JSON:JSON格式
     */
    @TableField("content_format")
    private String contentFormat;
    
    /**
     * 目标平台 - JSON数组格式，如["WEBSITE", "WECHAT", "WEIBO"]
     */
    @TableField("target_platforms")
    private String targetPlatforms;
    
    /**
     * 关键词列表 - JSON数组格式
     */
    @TableField("keywords")
    private String keywords;
    
    /**
     * 标签列表 - JSON数组格式
     */
    @TableField("tags")
    private String tags;
    
    /**
     * 内容状态 - DRAFT:草稿 GENERATING:生成中 GENERATED:已生成 REVIEWING:审核中 APPROVED:已批准 REJECTED:已拒绝 PUBLISHED:已发布 ARCHIVED:已归档
     */
    @TableField("status")
    private String status;
    
    /**
     * 发布状态 - UNPUBLISHED:未发布 PUBLISHED:已发布 SCHEDULED:定时发布 ARCHIVED:已归档
     */
    @TableField("publish_status")
    private String publishStatus;
    
    /**
     * 发布时间
     */
    @TableField("publish_time")
    private LocalDateTime publishTime;
    
    /**
     * 定时发布时间
     */
    @TableField("scheduled_time")
    private LocalDateTime scheduledTime;
    
    /**
     * 过期时间
     */
    @TableField("expire_time")
    private LocalDateTime expireTime;
    
    /**
     * 语言
     */
    @TableField("language")
    private String language;
    
    /**
     * 地域/市场
     */
    @TableField("region")
    private String region;
    
    /**
     * 行业分类
     */
    @TableField("industry")
    private String industry;
    
    /**
     * 产品/服务分类
     */
    @TableField("category")
    private String category;
    
    /**
     * 目标受众
     */
    @TableField("target_audience")
    private String targetAudience;
    
    /**
     * 内容风格/语调
     */
    @TableField("content_tone")
    private String contentTone;
    
    /**
     * 字数统计
     */
    @TableField("word_count")
    private Integer wordCount;
    
    /**
     * 预计阅读时间（分钟）
     */
    @TableField("estimated_read_time")
    private Integer estimatedReadTime;
    
    /**
     * 内容质量评分（0-100）
     */
    @TableField("quality_score")
    private Integer qualityScore;
    
    /**
     * SEO评分（0-100）
     */
    @TableField("seo_score")
    private Integer seoScore;
    
    /**
     * 可读性评分（0-100）
     */
    @TableField("readability_score")
    private Integer readabilityScore;
    
    /**
     * 原创性评分（0-100）
     */
    @TableField("originality_score")
    private Integer originalityScore;
    
    /**
     * 相关性评分（0-100）
     */
    @TableField("relevance_score")
    private Integer relevanceScore;
    
    /**
     * AI生成模型
     */
    @TableField("ai_model")
    private String aiModel;
    
    /**
     * AI模型版本
     */
    @TableField("ai_model_version")
    private String aiModelVersion;
    
    /**
     * 生成参数 - JSON格式
     */
    @TableField("generation_params")
    private String generationParams;
    
    /**
     * 生成时间
     */
    @TableField("generation_time")
    private LocalDateTime generationTime;
    
    /**
     * Token消耗数量
     */
    @TableField("tokens_used")
    private Integer tokensUsed;
    
    /**
     * 生成成本
     */
    @TableField("generation_cost")
    private BigDecimal generationCost;
    
    /**
     * 生成耗时（毫秒）
     */
    @TableField("generation_duration")
    private Long generationDuration;
    
    /**
     * 输入提示词
     */
    @TableField("input_prompt")
    private String inputPrompt;
    
    /**
     * 用户输入要求
     */
    @TableField("user_requirements")
    private String userRequirements;
    
    /**
     * 参考内容 - JSON数组格式
     */
    @TableField("reference_content")
    private String referenceContent;
    
    /**
     * 模板ID（如果使用模板生成）
     */
    @TableField("template_id")
    private Long templateId;
    
    /**
     * 版本号
     */
    @TableField("content_version")
    private Integer contentVersion;
    
    /**
     * 父内容ID（如果是修改版本）
     */
    @TableField("parent_content_id")
    private Long parentContentId;
    
    /**
     * 审核意见
     */
    @TableField("review_comment")
    private String reviewComment;
    
    /**
     * 审核时间
     */
    @TableField("review_time")
    private LocalDateTime reviewTime;
    
    /**
     * 审核人ID
     */
    @TableField("reviewer_id")
    private Long reviewerId;
    
    /**
     * 浏览量
     */
    @TableField("view_count")
    private Long viewCount;
    
    /**
     * 点赞数
     */
    @TableField("like_count")
    private Long likeCount;
    
    /**
     * 分享数
     */
    @TableField("share_count")
    private Long shareCount;
    
    /**
     * 评论数
     */
    @TableField("comment_count")
    private Long commentCount;
    
    /**
     * 转化数
     */
    @TableField("conversion_count")
    private Long conversionCount;
    
    /**
     * 点击率
     */
    @TableField("click_rate")
    private BigDecimal clickRate;
    
    /**
     * 转化率
     */
    @TableField("conversion_rate")
    private BigDecimal conversionRate;
    
    /**
     * 平均停留时间（秒）
     */
    @TableField("average_dwell_time")
    private Integer averageDwellTime;
    
    /**
     * 跳出率
     */
    @TableField("bounce_rate")
    private BigDecimal bounceRate;
    
    /**
     * 外部链接 - JSON数组格式
     */
    @TableField("external_links")
    private String externalLinks;
    
    /**
     * 图片列表 - JSON数组格式
     */
    @TableField("images")
    private String images;
    
    /**
     * 附件列表 - JSON数组格式
     */
    @TableField("attachments")
    private String attachments;
    
    /**
     * 元数据 - JSON格式
     */
    @TableField("metadata")
    private String metadata;
    
    /**
     * 自定义字段 - JSON格式
     */
    @TableField("custom_fields")
    private String customFields;
    
    /**
     * 最后优化时间
     */
    @TableField("last_optimized_time")
    private LocalDateTime lastOptimizedTime;
    
    /**
     * 是否收藏 - 0:未收藏 1:已收藏
     */
    @TableField("is_favorite")
    private Integer isFavorite;
    
    /**
     * 是否置顶 - 0:不置顶 1:置顶
     */
    @TableField("is_pinned")
    private Integer isPinned;
    
    /**
     * 排序权重
     */
    @TableField("sort_weight")
    private Integer sortWeight;
    
    /**
     * 内容类型常量
     */
    public static class ContentType {
        public static final String ARTICLE = "ARTICLE";             // 文章
        public static final String PRODUCT_DESC = "PRODUCT_DESC";   // 产品描述
        public static final String ADVERTISEMENT = "ADVERTISEMENT"; // 广告文案
        public static final String SOCIAL_POST = "SOCIAL_POST";     // 社交媒体帖子
        public static final String EMAIL = "EMAIL";                 // 邮件内容
        public static final String BLOG_POST = "BLOG_POST";         // 博客文章
        public static final String NEWS = "NEWS";                   // 新闻
        public static final String REVIEW = "REVIEW";               // 评测
    }
    
    /**
     * 内容格式常量
     */
    public static class ContentFormat {
        public static final String HTML = "HTML";                   // HTML格式
        public static final String MARKDOWN = "MARKDOWN";           // Markdown格式
        public static final String PLAIN_TEXT = "PLAIN_TEXT";       // 纯文本
        public static final String JSON = "JSON";                   // JSON格式
    }
    
    /**
     * 内容状态常量
     */
    public static class Status {
        public static final String DRAFT = "DRAFT";                 // 草稿
        public static final String GENERATING = "GENERATING";       // 生成中
        public static final String GENERATED = "GENERATED";         // 已生成
        public static final String REVIEWING = "REVIEWING";         // 审核中
        public static final String APPROVED = "APPROVED";           // 已批准
        public static final String REJECTED = "REJECTED";           // 已拒绝
        public static final String PUBLISHED = "PUBLISHED";         // 已发布
        public static final String ARCHIVED = "ARCHIVED";           // 已归档
    }
    
    /**
     * 发布状态常量
     */
    public static class PublishStatus {
        public static final String UNPUBLISHED = "UNPUBLISHED";     // 未发布
        public static final String PUBLISHED = "PUBLISHED";         // 已发布
        public static final String SCHEDULED = "SCHEDULED";         // 定时发布
        public static final String ARCHIVED = "ARCHIVED";           // 已归档
    }
    
    /**
     * 目标平台常量
     */
    public static class TargetPlatform {
        public static final String WEBSITE = "WEBSITE";             // 官网
        public static final String WECHAT = "WECHAT";               // 微信公众号
        public static final String WEIBO = "WEIBO";                 // 微博
        public static final String DOUYIN = "DOUYIN";               // 抖音
        public static final String XIAOHONGSHU = "XIAOHONGSHU";     // 小红书
        public static final String ZHIHU = "ZHIHU";                 // 知乎
        public static final String BILIBILI = "BILIBILI";           // B站
        public static final String TOUTIAO = "TOUTIAO";             // 今日头条
    }
}